package aip.project.service;

import java.util.List;
import java.util.Map;

import org.slim3.controller.upload.FileItem;
import org.slim3.datastore.Datastore;
import org.slim3.util.BeanUtil;

import aip.project.meta.ProdottoMeta;
import aip.project.model.ListaCategorie;
import aip.project.model.Prodotto;
import aip.project.model.Ricette;

import com.google.appengine.api.datastore.Blob;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.Transaction;


public class ProdottoService {
    
    
    private ProdottoMeta meta = new ProdottoMeta();

    public Prodotto getProdotto(Key k){
        Prodotto p = Datastore.get(Prodotto.class, k);        
        return p;
    }
    
   /* public List<Ricette> getRicette(Key k){
        return Datastore.get(Prodotto.class,k).getRicetteListRef().getModelList();
    }*/
    
    public List<Prodotto> getProdottoList(){
        return Datastore.query(meta).sort(meta.nome.asc).asList();
    }
    
    public Key addProdotto (Map<String, Object> nome,Key categorieRef){
        Prodotto p = new Prodotto();
        BeanUtil.copy(nome, p);
        p.getCategorieRef().setModel(Datastore.get(ListaCategorie.class,categorieRef));
        Transaction tx = Datastore.beginTransaction();
        Datastore.put(p);
        tx.commit();
        return p.getKey();
    }
    
    public Key addProdotto (Map<String, Object> nome){
        Prodotto p = new Prodotto();
        BeanUtil.copy(nome, p);
        p.getCategorieRef().setModel(Datastore.get(ListaCategorie.class,Datastore.stringToKey((String) nome.get("categorieRef"))));
        FileItem imageFile = (FileItem) nome.get("image");
        if (imageFile != null) {
            p.setFoto(new Blob(imageFile.getData()));
        }
        Transaction tx = Datastore.beginTransaction();
        Datastore.put(p);
        tx.commit();
        return p.getKey();
    }
    
    
    
    public void removeProdotto (Key k){
        Datastore.delete(k);
    }
}
